const { Users, Blogs }  = require('./model');

!(async function(){
    // 查询一条记录
    // const zhangsan = await Users.findOne({
    //     where: {
    //         username: 'zhangsan',
    //     }
    // })

    // 查询特定的列
    // const zhangsanName = await Users.findOne({
    //     attributes: ['username', 'nickname'],
    //     where: {
    //         username: 'zhangsan',
    //     }
    // })

    // 查询一个列表
    // const zhangsanBlogs = await Blogs.findAll({
    //     attributes: ['title', 'content'],
    //     where: {
    //         userId: 1,
    //     },
    //     order: [
    //         ['id', 'desc']
    //     ]
    // })

    // 分页查询
    // const blogList = await Blogs.findAll({
    //     limit: 10, // 限制本次查询条数
    //     offset: 0, // 跳过多少条
    //     order: [
    //         ['id', 'desc']
    //     ]
    // })

    // console.log(blogList.map(blog => blog.dataValues))

    // 查询总数
    // const blogListAndCount = await Blogs.findAndCountAll({
    //     limit: 1, // 限制本次查询条数
    //     offset: 0, // 跳过多少条
    //     order: [
    //         ['id', 'desc']
    //     ]
    // })

    // console.log(blogListAndCount.count, blogListAndCount.row)

    // 联表查询1
    // const blogListWithUsers = await Blogs.findAndCountAll({
    //     order: [
    //         ['id', 'desc']
    //     ],
    //     include: [
    //         {
    //             model: Users,
    //             attributes: ['username', 'nickname'],
    //             where: {
    //                 username: 'zhangsan'
    //             }
    //         }
    //     ]
    // })
    // console.log(blogListWithUsers.count)
    // console.log(blogListWithUsers.rows.map(blog => blog.dataValues))

    // 联表查询2
    const userListWithBlogs = await Users.findAndCountAll({
        attributes: ['username', 'nickname'],
        include: [
            {
                model: Blogs,
                attributes: ['title', 'content']
            }
        ]
    })
    console.log(userListWithBlogs.count)
    console.log(userListWithBlogs.rows.map(user => user.dataValues))
})()